package com.dfbz.demo03_类加载的时机;

/**
 * @author lscl
 * @version 1.0
 * @intro:
 */
public class Demo01 {
    public static void main(String[] args) throws Exception{


        Class.forName("com.dfbz.demo03_类加载的时机.A",false,Demo01.class.getClassLoader());

//        System.out.println(A.i);            // 访问类中的final成员类并不会初始化
//        System.out.println(A.B);            // 访问类中的final成员类并不会初始化
//        System.out.println(A.OBJ);          // 访问非基本数据类型和String时将会初始化A
//
//        Class<A> aClass = A.class;      	// 类已经初始化过一次了,并不会再次初始化
//        System.out.println(aClass);
    }
}

class A {
    static {
        System.out.println("A加载了");
    }

//    public static final int i =10;
//    public static final String B = "1";
//        public static final String B = new String();      // 如果访问的是堆内存中的String,那么A将会被加载
    public static final Obj OBJ = new Obj();
}

class Obj{}